home *** CD-ROM | disk | FTP | other *** search
- new nroot airplane/attackstatic
- sel airplane/attackstatic
-
- # --------------------------------------------------------------------
- # Defaultverhalten. Wenn nicht wichtig ist (also 1.0 oder so liefert)
- # dann nehmen wir das. Deshalb liefert die Routine einen Wert unter 1,
- # damit er von Ausnahmesituationen ueberboten werden kann.
- # Da goto nicht unterbrochen werden kann, sollte es nicht zulange
- # dauern.
- # --------------------------------------------------------------------
- new ncommandlist goto
- goto.setadjusttype reach
- goto.settestcommand aasgoto_test
- goto.addcommand true 0 0 -100 false 0 0 0 nothing 2.0
-
- proc aasgoto_test {} {
-
- global zufallszahl
-
- # Zufallszahl nur einmal initialisieren!
- set zufallszahl [expr rand()]
- return 0.5
- }
-
- # ------------------------------------------------------------------
- # Nun kommen alle speziellen Listen: Was soll das Objekt machen?
- # Es soll ein Ziel anfliegen, davor abdrehen und solange wegfliegen,
- # bis es wieder Anlauf nehmen kann. Das Anfliegen ist das Default-
- # verhalten. Nun kommt das Abdrehen
- # ------------------------------------------------------------------
-
- # ------------------------------------------------------------------
- # Ich weiche aus, wenn ich nahe am Ziel bin und dieses vor mir habe
- # ------------------------------------------------------------------
-
- # Ausweichen nach links.
- new ncommandlist goleft
- goleft.setadjusttype horimaneuver
- goleft.settestcommand aasgoleft_test
- goleft.addcommand true -150 20 0 false 0 0 0 nothing 3.0
-
- proc aasgoleft_test {} {
-
- global zufallszahl
-
- # ziel nahe und voraus?
- if {[.gethorizontaltargetdistance] < 100} {
-
- if {[.gettargetangle] < 70} {
-
- # Dann Zufallsauswahl, wohin es gehen soll
- if { (0.0 <= $zufallszahl) && (0.3 > $zufallszahl) } {
- return 1.0
- }
- }
- }
-
- return 0.0
- }
-
- # Ausweichen nach rechts.
- new ncommandlist goright
- goright.setadjusttype horimaneuver
- goright.settestcommand aasgoright_test
- goright.addcommand true 150 20 0 false 0 0 0 nothing 3.0
-
- proc aasgoright_test {} {
-
- global zufallszahl
-
- # ziel nahe und voraus?
- if {[.gethorizontaltargetdistance] < 100} {
-
- if {[.gettargetangle] < 70} {
-
- # Dann Zufallsauswahl, wohin es gehen soll
- if { (0.7 <= $zufallszahl) && (1.0 >= $zufallszahl) } {
- return 1.0
- }
- }
- }
-
- return 0.0
- }
-
- # Ausweichen nach oben.
- new ncommandlist goup
- goup.setadjusttype horimaneuver
- goup.settestcommand aasgoup_test
- goup.addcommand true 0 100 0 false 0 0 0 nothing 3.0
-
- proc aasgoup_test {} {
-
- global zufallszahl
-
- # ziel nahe und voraus?
- if {[.gethorizontaltargetdistance] < 100} {
-
- if {[.gettargetangle] < 70} {
-
- # Dann Zufallsauswahl, wohin es gehen soll
- if { (0.4 <= $zufallszahl) && (0.7 >= $zufallszahl) } {
- return 1.0
- }
- }
- }
-
- return 0.0
- }
-
- # ----------------------------------------------------------------------
- # Nun das Anlauf nehmen. Das Ziel ist hinter mir und ich bin noch nicht
- # weit genug weg um Anlauf nehmen zu koennen. Weil wir Ziele auf Inseln
- # (die statischen sind ja i.A. Haeuser) am besten von oben angreifen,
- # nutzen wir den Anlauf auch, um das Flugzeug zu "heben".
- # ----------------------------------------------------------------------
-
- new ncommandlist goaway
- goaway.setadjusttype horimaneuver
- goaway.settestcommand aasgoaway_test
- goaway.addcommand true 0 0 -100 false 0 0 0 nothing 2.0
-
- proc aasgoaway_test {} {
-
- if {[.gettargetdistance] < 200} {
-
- if {[.gettargetangle] > 90} {
-
- if {[.getverticaltargetdistance] <= -20.0} {
- return 1.0
- }
- }
- }
-
- return 0.0
- }
-
- new ncommandlist goawayandup
- goawayandup.setadjusttype horimaneuver
- goawayandup.settestcommand aasgoawayandup_test
- goawayandup.addcommand true 0 60 -100 false 0 0 0 nothing 2.0
-
- proc aasgoawayandup_test {} {
-
- if {[.gettargetdistance] < 200} {
-
- if {[.gettargetangle] > 90} {
-
- if {[.getverticaltargetangle] > -20.0} {
- return 1.0
- }
- }
- }
-
- return 0.0
- }
-
-
- sel ..
- sel ..
-
-